package com.itany.corejava.code08_常用类.string;

import java.util.Scanner;

/**
 * @author 石小俊
 * @version 1.0
 * @date 2023年03月16日 9:21
 */
public class Test07_正则练习 {

    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
//        checkPhone();
//        checkPersonId();
        checkEmail();
    }

    // 1.在控制台输入一个手机号码, 判断手机号码的格式是否正确
    // 手机号码由11位数字组成,且必须以13、15、16、18、19开头
    // 如果手机号码格式正确,则输出手机号码格式正确
    // 如果手机号码格式不正确,则输出手机号码格式不正确,请重新输入, 且必须重新输入,直到正确为止
    public static void checkPhone(){
        System.out.print("请输入一个手机号码:");
        String phone = sc.next();
        if(phone.matches("1[35689]\\d{9}")){
            System.out.println("手机号码格式正确");
        } else{
            System.out.println("手机号码格式不正确,请重新输入");
            checkPhone();
        }
    }

    // 2.在控制台输入一个身份证号码,判断格式是否正确
    // 身份证号码由15位或者18位字符组成
    // 如果是15位,则是纯数字,如果是18位,前面17位必须是数字,最后一位可以是数字或者字母X
    public static void checkPersonId(){
        System.out.print("请输入一个身份证号码:");
        String personId = sc.next();
        if(personId.matches("\\d{15}(\\d{2}[0-9x])?")){
            System.out.println("身份证号码格式正确");
        } else{
            System.out.println("身份证号码格式不正确,请重新输入");
            checkPersonId();
        }
    }

    // 3.在控制台输入一个电子邮箱,判断格式是否正确
    // 要求邮箱必须以英文字母或者数字开头,后面可以跟英文字母、数字或者下划线
    // 后面跟@符号,@符号后面可以是英文字母或者数字
    // 最终以.com或者.com.cn结尾
    public static void checkEmail(){
        System.out.print("请输入一个电子邮箱:");
        String email = sc.next();
        if(email.matches("[a-zA-Z0-9]\\w+@[0-9a-zA-Z]+\\.com(\\.cn)?")){
            System.out.println("电子邮箱格式正确");
        } else{
            System.out.println("电子邮箱格式不正确,请重新输入");
            checkEmail();
        }
    }
}
